﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using CongregacaoOs.Data;
using CongregacaoOs.Business;

namespace CongregacaoOs.WebForm.Cadastros
{
    public partial class Igreja : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            

            if (Session["DadosGerais"] == null) Response.Redirect("~/Cadastros/Account/Login.aspx");

            if (Session["TipoUsuario"].ToString() == "Local") Response.Redirect("~/Cadastros/Home.aspx");

            Page.Form.DefaultButton = btnBuscar.UniqueID;

            if (!IsPostBack)
            {
                AtualizarGridView();
                AtualizarDropDowListRegional();
                AtualizarDropRegionalFiltro();
            }
        }

        public void AtualizarGridView()
        {
            ccIgrejaBus bus = new ccIgrejaBus();
            ccIgreja ent = new ccIgreja();
            ent.nome = txtBuscarNome.Text != "" ? txtBuscarNome.Text : "";
            ent.numero = txtBuscarCodigo.Text != "" ? txtBuscarCodigo.Text : "";

            ent.idRegional = dropRegionalFiltro.SelectedValue != "" ? Convert.ToInt32(dropRegionalFiltro.SelectedValue) : 0;
            ent.idDistrital = dropDistritalFiltro.SelectedValue != "" ? Convert.ToInt32(dropDistritalFiltro.SelectedValue) : 0;
            ent.idCidade = dropCidadeFiltro.SelectedValue != "" ? Convert.ToInt32(dropCidadeFiltro.SelectedValue) : 0;

            gvIgreja.DataSource = bus.IgrejaSelect(ent);
            gvIgreja.DataBind();
        }

        public void AtualizarDropDowListRegional(int aID = 0)
        {
            ccRegionalBus bus = new ccRegionalBus();
            ccRegional ent = new ccRegional();
            dropRegional.DataSource = bus.RegionalSelect(ent);
            dropRegional.DataBind();

        }

        public void AtualizarDropRegionalFiltro()
        {
            using (ccRegionalBus bus = new ccRegionalBus())
            {
                ccRegional ent = new ccRegional();
                ent.idEstado = 0;
                ent.nome = "";
                ent.idPais = 0;
                dropRegionalFiltro.DataSource = bus.RegionalSelect(ent);
                dropRegionalFiltro.DataBind();


            }

        }

        public void AtualizarDropDowListDistrital(int aID = 0)
        {
            ccDistritalBus bus = new ccDistritalBus();
            ccDistrital ent = new ccDistrital();
            ent.idRegional = aID;

            if (dropRegional.SelectedValue != "")
            {
                ent.idRegional = Convert.ToInt32(dropRegional.SelectedValue);
                dropDistrital.DataSource = bus.DistritalSelect(ent);
                dropDistrital.DataBind();
            }
            else
            {
                dropDistrital.Items.Clear();
            }
        }

        public void AtualizarDropDistritalFiltro()
        {
            using (ccDistritalBus bus = new ccDistritalBus())
            {
                ccDistrital ent = new ccDistrital();

                if (dropRegionalFiltro.SelectedValue != "")
                {
                    ent.idRegional = Convert.ToInt32(dropRegionalFiltro.SelectedValue);
                    dropDistritalFiltro.DataSource = bus.DistritalSelect(ent);
                    dropDistritalFiltro.DataBind();
                }
                else 
                {
                    dropDistritalFiltro.Items.Clear();
                    dropCidadeFiltro.Items.Clear();
                }

            }
        }

        public void AtualizarDropDowListCidade(int aID = 0)
        {
            if (dropDistrital.SelectedValue == "")
            {
                dropCidade.Items.Clear();
                return;
            }

            if (dropRegional.SelectedValue != null || dropDistrital.SelectedValue != null)
            {
                ccCidadeBus bus = new ccCidadeBus();
                ccCidade ent = new ccCidade();
                ent.idRegional = aID;

                if (dropRegional.SelectedValue != null)
                    ent.idRegional = dropRegional.SelectedValue != "" ? Convert.ToInt32(dropRegional.SelectedValue) : 0;

                if (dropDistrital.SelectedValue != null)
                {
                    ent.idDistrital = dropDistrital.SelectedValue != "" ? Convert.ToInt32(dropDistrital.SelectedValue) : 0;

                    dropCidade.DataSource = bus.CidadeSelectComboBox(ent);
                    dropCidade.DataBind();
                }
                else
                {
                    dropCidade.Items.Clear();
                }
            }
            else
                dropCidade.Items.Clear();
        }

        public void AtualizarDropCidadeFiltro()
        {
            if (dropDistritalFiltro.SelectedValue == "")
            {
                dropCidadeFiltro.Items.Clear();
                return;
            }

            if (dropRegionalFiltro.SelectedValue != null || dropDistritalFiltro.SelectedValue != null)
            {
                using (ccCidadeBus bus = new ccCidadeBus())
                {
                    ccCidade ent = new ccCidade();

                    if (dropRegionalFiltro.SelectedValue != "")
                        ent.idRegional = dropRegionalFiltro.SelectedValue != "" ? Convert.ToInt32(dropRegionalFiltro.SelectedValue) : 0;

                    if (dropDistritalFiltro.SelectedValue != "")
                    {
                        ent.idDistrital = dropDistritalFiltro.SelectedValue != "" ? Convert.ToInt32(dropDistritalFiltro.SelectedValue) : 0;

                        dropCidadeFiltro.DataSource = bus.CidadeSelectComboBox(ent);
                        dropCidadeFiltro.DataBind();
                    }
                    else
                    {
                        dropCidadeFiltro.Items.Clear();
                    }

                    
                }
            }
            else
                dropCidadeFiltro.Items.Clear();
        }


        protected void gvIgreja_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName == "EDITAR" || e.CommandName == "EXCLUIR")
            {
                GridViewRow row = (GridViewRow)(((ImageButton)e.CommandSource).NamingContainer);

                int index = row.RowIndex;

                HiddenField hdIdIgreja = (gvIgreja.Rows[index].FindControl("hdIdIgreja") as HiddenField);
                hdID.Value = hdIdIgreja.Value;
                HiddenField hdCidade = (gvIgreja.Rows[index].FindControl("hdCidade") as HiddenField);
                HiddenField hdRegional = (gvIgreja.Rows[index].FindControl("hdRegional") as HiddenField);
                HiddenField hdDistrital = (gvIgreja.Rows[index].FindControl("hdDistrital") as HiddenField);

                HiddenField hdCep = (gvIgreja.Rows[index].FindControl("hdCep") as HiddenField);
                HiddenField hdEndereco = (gvIgreja.Rows[index].FindControl("hdEndereco") as HiddenField);
                HiddenField hdNumero = (gvIgreja.Rows[index].FindControl("hdNumero") as HiddenField);
                HiddenField hdTelefone = (gvIgreja.Rows[index].FindControl("hdTelefone") as HiddenField);

                HiddenField hdIgreja = (gvIgreja.Rows[index].FindControl("hdIgreja") as HiddenField);

                if (e.CommandName == "EDITAR")
                {

                    hfIndexAccordion.Value = "1";
                    txtNumero.Text = hdNumero.Value.ToString();
                    txtNome.Text = hdIgreja.Value.ToString();

                    txtCep.Text = hdCep.Value.ToString();
                    txtEndereco.Text = hdEndereco.Value.ToString();
                    txtNumero.Text = hdNumero.Value.ToString();
                    txtTelefone.Text = hdTelefone.Value.ToString();


                    AtualizarDropDowListRegional();
                    dropRegional.ClearSelection();
                    dropRegional.Items.FindByText(hdRegional.Value).Selected = true;

                    if (hdDistrital.Value != "")
                    {
                        AtualizarDropDowListDistrital();
                        if (hdDistrital.Value != null)
                        {
                            dropDistrital.ClearSelection();
                            dropDistrital.Items.FindByText(hdDistrital.Value).Selected = true;
                        }
                    }


                    AtualizarDropDowListCidade();
                    dropCidade.ClearSelection();
                    dropCidade.Items.FindByText(hdCidade.Value).Selected = true;

                }
                else if (e.CommandName == "EXCLUIR")
                {
                    ccIgrejaBus bus = new ccIgrejaBus();
                    bus.IgrejaDelete(Convert.ToInt32(hdID.Value));
                }
            }

            AtualizarGridView();
        }

        protected void gvIgreja_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            AtualizarGridView();
            gvIgreja.PageIndex = e.NewPageIndex;
            gvIgreja.DataBind();
        }

        protected void dropRegional_SelectedIndexChanged(object sender, EventArgs e)
        {
            AtualizarDropDowListDistrital();
            AtualizarDropDowListCidade();
        }

        protected void gvIgreja_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                ImageButton imgEditar = (e.Row.FindControl("imgEditar") as ImageButton);
                imgEditar.CommandArgument = e.Row.RowIndex.ToString();

                ImageButton imgDelete = (e.Row.FindControl("imgDelete") as ImageButton);
                imgDelete.CommandArgument = e.Row.RowIndex.ToString();

                imgDelete.Attributes.Add("onclick", "javascript:return " +
                        "confirm('Confirmar exclusão do registro: " +
                        DataBinder.Eval(e.Row.DataItem, "Igreja") + "?')");
            }
        }

        protected void btnSalvar_Click(object sender, EventArgs e)
        {

            try
            {
                ccIgrejaBus bus = new ccIgrejaBus();
                ccIgreja ent = new ccIgreja();

                ent.nome = txtNome.Text.Trim();
                ent.cep = txtCep.Text.Trim();

                ent.endereco = txtEndereco.Text.Trim();
                ent.numero = txtNumero.Text.Trim();
                ent.telefone = txtTelefone.Text.Trim();

                ent.idCidade = dropCidade.SelectedValue != "" ? Convert.ToInt32(dropCidade.SelectedValue) : 0;
                ent.idRegional = dropRegional.SelectedValue != "" ? Convert.ToInt32(dropRegional.SelectedValue) : 0;
                ent.idDistrital = dropDistrital.SelectedValue != "" ? Convert.ToInt32(dropDistrital.SelectedValue) : 0;

                if (hdID.Value != "") ent.idIgreja = Convert.ToInt32(hdID.Value);

                hfIndexAccordion.Value = "0";
                bus.IgrejaSaveOrUpdate(ent);

                AtualizarGridView();
                Functions.LimparCampos(this);

                MessageWindow.MessageType = true;
                MessageWindow.Texto = "Registro salvo com sucesso!!!";
                MessageWindow.ShowWindow();
            }
            catch (Exception)
            {

                MessageWindow.MessageType = false;
                MessageWindow.Texto = "Houve um erro ao salvar o registro. Tente novamente ou contate o suporte";
                MessageWindow.ShowWindow();
            }
           

        }

        protected void btnVoltar_Click(object sender, EventArgs e)
        {
            hfIndexAccordion.Value = "0";
            hdID.Value = "";
            Functions.LimparCampos(this);

        }

        protected void btnBuscar_Click(object sender, EventArgs e)
        {
            AtualizarGridView();
        }

        protected void btnAdicionarNovo_Click(object sender, EventArgs e)
        {
            hfIndexAccordion.Value = "1";
            if (dropRegional.Items.Count > 0) dropRegional.SelectedIndex = 0;
            if (dropDistrital.Items.Count > 0) dropDistrital.SelectedIndex = 0;
            if (dropCidade.Items.Count > 0) dropCidade.SelectedIndex = 0;

            hdID.Value = "";
            Functions.LimparCampos(this);
        }

        protected void dropDistrital_SelectedIndexChanged(object sender, EventArgs e)
        {
            AtualizarDropDowListCidade();
        }


        protected void dropRegionalFiltro_SelectedIndexChanged(object sender, EventArgs e)
        {
            AtualizarDropCidadeFiltro();
            AtualizarDropDistritalFiltro();
            AtualizarGridView();
        }

        protected void dropDistritalFiltro_SelectedIndexChanged(object sender, EventArgs e)
        {
            AtualizarDropCidadeFiltro();
            AtualizarGridView();
        }


        protected void dropCidadeFiltro_SelectedIndexChanged(object sender, EventArgs e)
        {
            AtualizarGridView();
        }

        protected void dropRegionalFiltro_DataBound(object sender, EventArgs e)
        {
            dropRegionalFiltro.Items.Insert(0, new ListItem("Escolha a Regional", String.Empty));
        }

        protected void dropDistritalFiltro_DataBound(object sender, EventArgs e)
        {
            dropDistritalFiltro.Items.Insert(0, new ListItem("Escolha a Distrital", String.Empty));
        }

        protected void dropCidadeFiltro_DataBound(object sender, EventArgs e)
        {
            dropCidadeFiltro.Items.Insert(0, new ListItem("Escolha a Cidade", String.Empty));
        }

        protected void dropRegional_DataBound(object sender, EventArgs e)
        {
            dropRegional.Items.Insert(0, new ListItem("Escolha a Regional", String.Empty));
        }

        protected void dropDistrital_DataBound(object sender, EventArgs e)
        {
            dropDistrital.Items.Insert(0, new ListItem("Escolha a Distrital", String.Empty));
        }

        protected void dropCidade_DataBound(object sender, EventArgs e)
        {
            dropCidade.Items.Insert(0, new ListItem("Escolha a Cidade", String.Empty));
        }


    }
}